// FOR REFERENCE ONLY.
// This contains all the fields that we know to exist in the database. It is not
// necessary to use them all, since Prisma will ignore (and remove) any fields
// that are not in the schema.

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "mongodb"
  url      = env("MONGOHQ_URL")
}

// USER COLLECTION ---------------------

type FileData {
  contents String
  ext      String
  key      String
  name     String
  path     String?

  // Nonsense
  dataSource Json?    @map("__dataSource") // Null only | Undefined
  persisted  Boolean? @map("__persisted") // Undefined
  strict     Boolean?  @map("__strict") // Undefined
}

type File {
  contents String
  ext      String
  key      String
  name     String
  path     String? // Undefined | Null

  // Nonsense
  cachedRelations Json?     @map("__cachedRelations") // Undefined
  data            FileData? @map("__data") // Undefined
  dataSource      Json?     @map("__dataSource") // Null | Undefined
  persisted       Boolean?  @map("__persisted") // Undefined
  strict          Boolean?  @map("__strict") // Undefined
}

type CompletedChallengeData {
  challengeType Int? // Null | Undefined
  completedDate Float
  id            String
  solution      String? // Null | Undefined

  // Nonsense
  dataSource Json?   @map("__dataSource") // Null
  persisted  Boolean @map("__persisted")
  strict     Boolean @map("__strict")
}

type CompletedChallenge {
  challengeType      Int? // Null | Undefined
  completedDate      Float
  files              File[]
  githubLink         String? // Undefined
  id                 String
  isManuallyApproved Boolean? // Undefined
  solution           String? // Undefined

  // Nonsense
  cachedRelations Json?                   @map("__cachedRelations")
  data            CompletedChallengeData? @map("__data") // Undefined
  dataSource      Json?                   @map("__dataSource") // Null only
  persisted       Boolean?                @map("__persisted") // Undefined
  strict          Boolean?                @map("__strict") // Undefined
}

type Portfolio {
  description String
  id          String
  image       String
  title       String
  url         String
}

type ProfileUIData {
  isLocked      Boolean
  showAbout     Boolean
  showCerts     Boolean
  showDonation  Boolean? // Undefined
  showHeatMap   Boolean
  showLocation  Boolean
  showName      Boolean
  showPoints    Boolean
  showPortfolio Boolean
  showTimeLine  Boolean

  // Nonsense
  persisted Boolean? @map("__persisted") // Undefined
  strict    Boolean? @map("__strict") // Undefined
}

type ProfileUI {
  isLocked      Boolean? // Undefined
  showAbout     Boolean? // Undefined
  showCerts     Boolean? // Undefined
  showDonation  Boolean? // Undefined
  showHeatMap   Boolean? // Undefined
  showLocation  Boolean? // Undefined
  showName      Boolean? // Undefined
  showPoints    Boolean? // Undefined
  showPortfolio Boolean? // Undefined
  showTimeLine  Boolean? // Undefined

  // Nonsense
  cachedRelations Json?          @map("__cachedRelations") // Undefined | {}
  data            ProfileUIData? @map("__data") // Undefined
  persisted       Boolean?       @map("__persisted") // Undefined
  strict          Boolean?       @map("__strict") // Undefined
}

type ProgressTimestamp {
  timestamp Float
}

type SavedChallengeFile {
  contents String
  ext      String
  history  String[]
  key      String
  name     String
}

type SavedChallenge {
  files         SavedChallengeFile[]
  id            String
  lastSavedDate Float
}

model user {
  id                           String               @id @default(auto()) @map("_id") @db.ObjectId
  about                        String
  acceptedPrivacyTerms         Boolean
  badges                       Json? // Undefined | { coreTeam [][] }
  completedChallenges          CompletedChallenge[]
  currentChallengeId           String?
  donationEmails               String[]             @default([]) // Undefined | String[] (only possible for built in Types like String)
  email                        String
  emailAuthLinkTTL             DateTime? // Null | Undefined
  emailVerified                Boolean
  emailVerifyTTL               DateTime? // Null | Undefined
  externalId                   String
  // github    String? Removed, because value was only ever found to be Null
  githubProfile                String? // Undefined
  isApisMicroservicesCert      Boolean? // Undefined
  isBackEndCert                Boolean? // Undefined
  isBanned                     Boolean? // Undefined
  isCheater                    Boolean? // Undefined
  isDataAnalysisPyCertV7       Boolean? // Undefined
  isDataVisCert                Boolean? // Undefined
  isDonating                   Boolean
  isFrontEndCert               Boolean? // Undefined
  isFrontEndLibsCert           Boolean? // Undefined
  isFullStackCert              Boolean? // Undefined
  isGithub                     Boolean? // Undefined
  isHonest                     Boolean?
  isInfosecCertV7              Boolean? // Undefined
  isInfosecQaCert              Boolean? // Undefined
  isJsAlgoDataStructCert       Boolean? // Undefined
  isLinkedIn                   Boolean? // Undefined
  isMachineLearningPyCertV7    Boolean? // Undefined
  isQaCertV7                   Boolean? // Undefined
  isRelationalDatabaseCertV8   Boolean? // Undefined
  isRespWebDesignCert          Boolean? // Undefined
  isSciCompPyCertV7            Boolean? // Undefined
  isTwitter                    Boolean? // Undefined
  isWebsite                    Boolean? // Undefined
  is2018DataVisCert            Boolean? // Undefined
  is2018FullStackCert          Boolean? // Undefined
  keyboardShortcuts            Boolean? // Undefined
  linkedin                     String? // Null | Undefined
  location                     String? // Null
  name                         String? // Null
  needsModeration              Boolean? // Undefined
  newEmail                     String? // Null | Undefined
  partiallyCompletedChallenges Json? // Undefined | PartiallyCompletedChallenge[] TODO: The db only has this as an empty array
  password                     String? // Undefined
  picture                      String
  portfolio                    Portfolio[]
  profileUI                    ProfileUI? // Undefined
  progressTimestamps           Json? // ProgressTimestamp[] | Null[] | Int64[] | Double[]
  rand                         Float? // Undefined
  savedChallenges              Json? // Undefined | SavedChallenge[]
  sendQuincyEmail              Boolean
  sound                        Boolean? // Undefined
  theme                        String? // Undefined
  timezone                     String? // Undefined
  twitter                      String? // Null | Undefined
  unsubscribeId                String
  username                     String
  usernameDisplay              String? // Undefined
  verificationToken            String? // Undefined
  website                      String? // Undefined
  yearsTopContributor          String[]             @default([]) // Undefined | String[]
  isClassroomAccount           Boolean? // Undefined
}

// -----------------------------------

model AccessToken {
  id      String   @id @map("_id")
  created DateTime @db.Date
  ttl     Int
  userId  String   @db.ObjectId

  @@index([userId], map: "userId_1")
}

model AuthToken {
  id      String   @id @map("_id")
  created DateTime @db.Date
  ttl     Int
  userId  String   @db.ObjectId
}

model Donation {
  id             String            @id @default(auto()) @map("_id") @db.ObjectId
  amount         Int
  customerId     String
  duration       String?
  email          String
  endDate        DonationEndDate?
  provider       String
  startDate      DonationStartDate
  subscriptionId String
  userId         String            @db.ObjectId

  @@index([email], map: "email_1")
  @@index([userId], map: "userId_1")
}

model UserRateLimit {
  id             String @id @default(auto()) @map("_id") @db.ObjectId
  /// Field referred in an index, but found no data to define the type.
  expirationDate Json?

  @@index([expirationDate], map: "expirationDate_1")
}

model UserToken {
  id      String   @id @map("_id")
  created DateTime @db.Date
  ttl     Float
  userId  String   @db.ObjectId

  @@index([userId], map: "userId_1")
}

model changelog {
  id        String   @id @default(auto()) @map("_id") @db.ObjectId
  appliedAt DateTime @db.Date
  fileName  String
}

model sessions {
  id      String   @id @map("_id")
  expires DateTime @db.Date
  session String

  @@index([expires], map: "expires_1")
}

model userCredential {
  id          String                    @id @default(auto()) @map("_id") @db.ObjectId
  authScheme  String
  created     DateTime                  @db.Date
  credentials UserCredentialCredentials
  externalId  String
  modified    DateTime                  @db.Date
  /// Could not determine type: the field only had null or empty values in the sample set.
  profile     Json?
  provider    String
  userId      String                    @db.ObjectId
}

model userIdentity {
  id          String                   @id @default(auto()) @map("_id") @db.ObjectId
  authScheme  String?
  created     DateTime?                @db.Date
  credentials UserIdentityCredentials?
  externalId  String
  modified    DateTime?                @db.Date
  profile     UserIdentityProfile?
  provider    String
  userId      String                   @db.ObjectId

  @@index([userId], map: "userId_1")
  @@index([externalId], map: "externalId_1")
  @@index([provider, externalId], map: "provider_1_externalId_1")
}

type DonationEndDate {
  date DateTime @map("_date") @db.Date
  when String   @map("_when")
}

type DonationStartDate {
  date DateTime @map("_date") @db.Date
  when String   @map("_when")
}

type UserCredentialCredentials {
  accessToken String
}

type UserIdentityCredentials {
  accessToken String?
  token       String?
  tokenSecret String?
}

type UserIdentityProfile {
  /// This field was commented out because of an invalid name. Please provide a valid one that matches [a-zA-Z][a-zA-Z0-9_]*
  // 0 String? @map("0")
  /// This field was commented out because of an invalid name. Please provide a valid one that matches [a-zA-Z][a-zA-Z0-9_]*
  // 1 String? @map("1")
  /// This field was commented out because of an invalid name. Please provide a valid one that matches [a-zA-Z][a-zA-Z0-9_]*
  // 2 String? @map("2")
  /// This field was commented out because of an invalid name. Please provide a valid one that matches [a-zA-Z][a-zA-Z0-9_]*
  // 3 String? @map("3")
  /// This field was commented out because of an invalid name. Please provide a valid one that matches [a-zA-Z][a-zA-Z0-9_]*
  // 4 String? @map("4")
  /// This field was commented out because of an invalid name. Please provide a valid one that matches [a-zA-Z][a-zA-Z0-9_]*
  // 5 String? @map("5")
  accessLevel  String?                          @map("_accessLevel")
  json         UserIdentityProfileJson?         @map("_json")
  raw          String?                          @map("_raw")
  birthday     String?
  displayName  String?
  email        String?
  emails       UserIdentityProfileEmails[]
  gender       String?
  /// Multiple data types found: String: 97.5%, Int: 2.5% out of 917 sampled entries
  id           Json?
  isPerson     Boolean?
  isPlusUser   Boolean?
  language     String?
  name         UserIdentityProfileName?
  /// Multiple data types found: Array(String): 0.4%, Array(UserIdentityProfilePhotos): 99.6% out of 767 sampled entries
  photos       Json?
  placesLived  UserIdentityProfilePlacesLived[]
  profileUrl   String?
  provider     String?
  relationship String?
  username     String?
}

type UserIdentityProfileEmails {
  type  String?
  value String?
}

type UserIdentityProfileJson {
  aboutMe                            String?
  apiStandardProfileRequest          UserIdentityProfileJsonApiStandardProfileRequest?
  avatar_url                         String?
  bio                                String?
  birthday                           String?
  blog                               String?
  braggingRights                     String?
  circledByCount                     Int?
  company                            String?
  contributors_enabled               Boolean?
  cover                              UserIdentityProfileJsonCover?
  created_at                         String?
  currentShare                       UserIdentityProfileJsonCurrentShare?
  default_profile                    Boolean?
  default_profile_image              Boolean?
  description                        String?
  displayName                        String?
  distance                           Int?
  domain                             String?
  email                              String?
  emailAddress                       String?
  emails                             UserIdentityProfileJsonEmails[]
  entities                           UserIdentityProfileJsonEntities?
  etag                               String?
  events_url                         String?
  favourites_count                   Int?
  firstName                          String?
  first_name                         String?
  follow_request_sent                Boolean?
  followers                          Int?
  followers_count                    Int?
  followers_url                      String?
  /// Multiple data types found: Boolean: 5%, Int: 95% out of 686 sampled entries
  following                          Json?
  following_url                      String?
  formattedName                      String?
  friends_count                      Int?
  gender                             String?
  geo_enabled                        Boolean?
  gists_url                          String?
  gravatar_id                        String?
  has_extended_profile               Boolean?
  headline                           String?
  hireable                           Boolean?
  html_url                           String?
  /// Multiple data types found: String: 25.2%, Float: 1.2%, Int: 73.6% out of 917 sampled entries
  id                                 Json
  id_str                             String?
  image                              UserIdentityProfileJsonImage?
  industry                           String?
  isPlusUser                         Boolean?
  is_translation_enabled             Boolean?
  is_translator                      Boolean?
  kind                               String?
  lang                               String?
  language                           String?
  lastName                           String?
  last_name                          String?
  link                               String?
  listed_count                       Int?
  locale                             String?
  /// Multiple data types found: String: 87.2%, UserIdentityProfileJsonLocation: 12.8% out of 727 sampled entries
  location                           Json?
  login                              String?
  maidenName                         String?
  middle_name                        String?
  /// Multiple data types found: String: 80.8%, UserIdentityProfileJsonName: 19.2% out of 877 sampled entries
  name                               Json?
  needs_phone_verification           Boolean?
  nickname                           String?
  notifications                      Boolean?
  numConnections                     Int?
  numConnectionsCapped               Boolean?
  objectType                         String?
  occupation                         String?
  organizations                      UserIdentityProfileJsonOrganizations[]
  organizations_url                  String?
  pictureUrl                         String?
  pictureUrls                        UserIdentityProfileJsonPictureUrls?
  placesLived                        UserIdentityProfileJsonPlacesLived[]
  positions                          UserIdentityProfileJsonPositions?
  profile_background_color           String?
  profile_background_image_url       String?
  profile_background_image_url_https String?
  profile_background_tile            Boolean?
  profile_banner_url                 String?
  profile_image_url                  String?
  profile_image_url_https            String?
  profile_link_color                 String?
  profile_location                   UserIdentityProfileJsonProfileLocation?
  profile_sidebar_border_color       String?
  profile_sidebar_fill_color         String?
  profile_text_color                 String?
  profile_use_background_image       Boolean?
  protected                          Boolean?
  publicProfileUrl                   String?
  public_gists                       Int?
  public_repos                       Int?
  received_events_url                String?
  relationToViewer                   UserIdentityProfileJsonRelationToViewer?
  relationshipStatus                 String?
  repos_url                          String?
  screen_name                        String?
  siteStandardProfileRequest         UserIdentityProfileJsonSiteStandardProfileRequest?
  site_admin                         Boolean?
  skills                             String?
  starred_url                        String?
  status                             UserIdentityProfileJsonStatus?
  statuses_count                     Int?
  subscriptions_url                  String?
  summary                            String?
  suspended                          Boolean?
  tagline                            String?
  time_zone                          String?
  /// Multiple data types found: Float: 10.2%, Int: 89.8% out of 49 sampled entries
  timezone                           Json?
  translator_type                    String?
  type                               String?
  updated_at                         String?
  updated_time                       String?
  url                                String?
  urls                               UserIdentityProfileJsonUrls[]
  utc_offset                         Int?
  verified                           Boolean?
}

type UserIdentityProfileJsonApiStandardProfileRequest {
  headers UserIdentityProfileJsonApiStandardProfileRequestHeaders
  url     String
}

type UserIdentityProfileJsonApiStandardProfileRequestHeaders {
  total  Int                                                             @map("_total")
  values UserIdentityProfileJsonApiStandardProfileRequestHeadersValues[]
}

type UserIdentityProfileJsonApiStandardProfileRequestHeadersValues {
  name  String
  value String
}

type UserIdentityProfileJsonCover {
  coverInfo  UserIdentityProfileJsonCoverCoverInfo
  coverPhoto UserIdentityProfileJsonCoverCoverPhoto
  layout     String
}

type UserIdentityProfileJsonCoverCoverInfo {
  leftImageOffset Int
  topImageOffset  Int
}

type UserIdentityProfileJsonCoverCoverPhoto {
  height Int
  url    String
  width  Int
}

type UserIdentityProfileJsonCurrentShare {
  attribution UserIdentityProfileJsonCurrentShareAttribution?
  author      UserIdentityProfileJsonCurrentShareAuthor
  comment     String?
  content     UserIdentityProfileJsonCurrentShareContent?
  id          String
  source      UserIdentityProfileJsonCurrentShareSource
  timestamp   Float
  visibility  UserIdentityProfileJsonCurrentShareVisibility
}

type UserIdentityProfileJsonCurrentShareAttribution {
  share UserIdentityProfileJsonCurrentShareAttributionShare
}

type UserIdentityProfileJsonCurrentShareAttributionShare {
  author  UserIdentityProfileJsonCurrentShareAttributionShareAuthor
  comment String?
  id      String
}

type UserIdentityProfileJsonCurrentShareAttributionShareAuthor {
  firstName String
  id        String
  lastName  String
}

type UserIdentityProfileJsonCurrentShareAuthor {
  firstName String
  id        String
  lastName  String
}

type UserIdentityProfileJsonCurrentShareContent {
  description       String
  eyebrowUrl        String
  resolvedUrl       String
  shortenedUrl      String
  submittedImageUrl String?
  submittedUrl      String
  thumbnailUrl      String?
  title             String
}

type UserIdentityProfileJsonCurrentShareSource {
  application     UserIdentityProfileJsonCurrentShareSourceApplication?
  serviceProvider UserIdentityProfileJsonCurrentShareSourceServiceProvider
}

type UserIdentityProfileJsonCurrentShareSourceApplication {
  name String
}

type UserIdentityProfileJsonCurrentShareSourceServiceProvider {
  name String
}

type UserIdentityProfileJsonCurrentShareVisibility {
  code String
}

type UserIdentityProfileJsonEmails {
  type  String
  value String
}

type UserIdentityProfileJsonEntities {
  description UserIdentityProfileJsonEntitiesDescription
  url         UserIdentityProfileJsonEntitiesUrl?
}

type UserIdentityProfileJsonEntitiesDescription {
  urls UserIdentityProfileJsonEntitiesDescriptionUrls[]
}

type UserIdentityProfileJsonEntitiesDescriptionUrls {
  display_url  String
  expanded_url String
  indices      Int[]
  url          String
}

type UserIdentityProfileJsonEntitiesUrl {
  urls UserIdentityProfileJsonEntitiesUrlUrls[]
}

type UserIdentityProfileJsonEntitiesUrlUrls {
  display_url  String
  expanded_url String
  indices      Int[]
  url          String
}

type UserIdentityProfileJsonImage {
  isDefault Boolean
  url       String
}

type UserIdentityProfileJsonLocation {
  country UserIdentityProfileJsonLocationCountry?
  id      String?
  name    String
}

type UserIdentityProfileJsonLocationCountry {
  code String
}

type UserIdentityProfileJsonName {
  familyName String
  givenName  String
}

type UserIdentityProfileJsonOrganizations {
  endDate   String?
  name      String
  primary   Boolean
  startDate String?
  title     String?
  type      String
}

type UserIdentityProfileJsonPictureUrls {
  total  Int      @map("_total")
  values String[]
}

type UserIdentityProfileJsonPlacesLived {
  primary Boolean?
  value   String
}

type UserIdentityProfileJsonPositions {
  total  Int                                      @map("_total")
  values UserIdentityProfileJsonPositionsValues[]
}

type UserIdentityProfileJsonPositionsValues {
  company   UserIdentityProfileJsonPositionsValuesCompany
  id        Int
  isCurrent Boolean
  location  UserIdentityProfileJsonPositionsValuesLocation?
  startDate UserIdentityProfileJsonPositionsValuesStartDate?
  summary   String?
  title     String
}

type UserIdentityProfileJsonPositionsValuesCompany {
  id       Int?
  industry String?
  name     String
  size     String?
  ticker   String?
  type     String?
}

type UserIdentityProfileJsonPositionsValuesLocation {
  country UserIdentityProfileJsonPositionsValuesLocationCountry?
  name    String?
}

type UserIdentityProfileJsonPositionsValuesLocationCountry {
  code String
  name String
}

type UserIdentityProfileJsonPositionsValuesStartDate {
  month Int?
  year  Int
}

type UserIdentityProfileJsonProfileLocation {
  /// Nested objects had no data in the sample dataset to introspect a nested type.
  attributes       Json
  /// Could not determine type: the field only had null or empty values in the sample set.
  bounding_box     Json?
  /// Could not determine type: the field only had null or empty values in the sample set.
  contained_within Json?
  country          String
  country_code     String
  full_name        String
  id               String
  name             String
  place_type       String
  url              String
}

type UserIdentityProfileJsonRelationToViewer {
  distance Int
}

type UserIdentityProfileJsonSiteStandardProfileRequest {
  url String
}

type UserIdentityProfileJsonStatus {
  /// Could not determine type: the field only had null or empty values in the sample set.
  contributors              Json?
  /// Could not determine type: the field only had null or empty values in the sample set.
  coordinates               Json?
  created_at                String
  entities                  UserIdentityProfileJsonStatusEntities
  extended_entities         UserIdentityProfileJsonStatusExtendedEntities?
  favorite_count            Int
  favorited                 Boolean
  /// Could not determine type: the field only had null or empty values in the sample set.
  geo                       Json?
  id                        Float
  id_str                    String
  in_reply_to_screen_name   String?
  in_reply_to_status_id     Float?
  in_reply_to_status_id_str String?
  /// Multiple data types found: Float: 33.3%, Int: 66.7% out of 33 sampled entries
  in_reply_to_user_id       Json?
  in_reply_to_user_id_str   String?
  is_quote_status           Boolean?
  lang                      String
  place                     UserIdentityProfileJsonStatusPlace?
  possibly_sensitive        Boolean?
  quoted_status_id          Float?
  quoted_status_id_str      String?
  retweet_count             Int
  retweeted                 Boolean
  retweeted_status          UserIdentityProfileJsonStatusRetweetedStatus?
  source                    String
  text                      String
  truncated                 Boolean
}

type UserIdentityProfileJsonStatusEntities {
  hashtags      UserIdentityProfileJsonStatusEntitiesHashtags[]
  media         UserIdentityProfileJsonStatusEntitiesMedia[]
  /// Could not determine type: the field only had null or empty values in the sample set.
  symbols       Json?
  urls          UserIdentityProfileJsonStatusEntitiesUrls[]
  user_mentions UserIdentityProfileJsonStatusEntitiesUserMentions[]
}

type UserIdentityProfileJsonStatusEntitiesHashtags {
  indices Int[]
  text    String
}

type UserIdentityProfileJsonStatusEntitiesMedia {
  display_url          String
  expanded_url         String
  id                   Float
  id_str               String
  indices              Int[]
  media_url            String
  media_url_https      String
  sizes                UserIdentityProfileJsonStatusEntitiesMediaSizes
  source_status_id     Float?
  source_status_id_str String?
  /// Multiple data types found: Float: 40%, Int: 60% out of 5 sampled entries
  source_user_id       Json?
  source_user_id_str   String?
  type                 String
  url                  String
}

type UserIdentityProfileJsonStatusEntitiesMediaSizes {
  large  UserIdentityProfileJsonStatusEntitiesMediaSizesLarge
  medium UserIdentityProfileJsonStatusEntitiesMediaSizesMedium
  small  UserIdentityProfileJsonStatusEntitiesMediaSizesSmall
  thumb  UserIdentityProfileJsonStatusEntitiesMediaSizesThumb
}

type UserIdentityProfileJsonStatusEntitiesMediaSizesLarge {
  h      Int
  resize String
  w      Int
}

type UserIdentityProfileJsonStatusEntitiesMediaSizesMedium {
  h      Int
  resize String
  w      Int
}

type UserIdentityProfileJsonStatusEntitiesMediaSizesSmall {
  h      Int
  resize String
  w      Int
}

type UserIdentityProfileJsonStatusEntitiesMediaSizesThumb {
  h      Int
  resize String
  w      Int
}

type UserIdentityProfileJsonStatusEntitiesUrls {
  display_url  String
  expanded_url String
  indices      Int[]
  url          String
}

type UserIdentityProfileJsonStatusEntitiesUserMentions {
  /// Multiple data types found: Float: 20.8%, Int: 79.2% out of 24 sampled entries
  id          Json
  id_str      String
  indices     Int[]
  name        String
  screen_name String
}

type UserIdentityProfileJsonStatusExtendedEntities {
  media UserIdentityProfileJsonStatusExtendedEntitiesMedia[]
}

type UserIdentityProfileJsonStatusExtendedEntitiesMedia {
  display_url          String
  expanded_url         String
  id                   Float
  id_str               String
  indices              Int[]
  media_url            String
  media_url_https      String
  sizes                UserIdentityProfileJsonStatusExtendedEntitiesMediaSizes
  source_status_id     Float?
  source_status_id_str String?
  /// Multiple data types found: Float: 40%, Int: 60% out of 5 sampled entries
  source_user_id       Json?
  source_user_id_str   String?
  type                 String
  url                  String
  video_info           UserIdentityProfileJsonStatusExtendedEntitiesMediaVideoInfo?
}

type UserIdentityProfileJsonStatusExtendedEntitiesMediaSizes {
  large  UserIdentityProfileJsonStatusExtendedEntitiesMediaSizesLarge
  medium UserIdentityProfileJsonStatusExtendedEntitiesMediaSizesMedium
  small  UserIdentityProfileJsonStatusExtendedEntitiesMediaSizesSmall
  thumb  UserIdentityProfileJsonStatusExtendedEntitiesMediaSizesThumb
}

type UserIdentityProfileJsonStatusExtendedEntitiesMediaSizesLarge {
  h      Int
  resize String
  w      Int
}

type UserIdentityProfileJsonStatusExtendedEntitiesMediaSizesMedium {
  h      Int
  resize String
  w      Int
}

type UserIdentityProfileJsonStatusExtendedEntitiesMediaSizesSmall {
  h      Int
  resize String
  w      Int
}

type UserIdentityProfileJsonStatusExtendedEntitiesMediaSizesThumb {
  h      Int
  resize String
  w      Int
}

type UserIdentityProfileJsonStatusExtendedEntitiesMediaVideoInfo {
  aspect_ratio Int[]
  variants     UserIdentityProfileJsonStatusExtendedEntitiesMediaVideoInfoVariants[]
}

type UserIdentityProfileJsonStatusExtendedEntitiesMediaVideoInfoVariants {
  bitrate      Int
  content_type String
  url          String
}

type UserIdentityProfileJsonStatusPlace {
  /// Nested objects had no data in the sample dataset to introspect a nested type.
  attributes       Json
  bounding_box     UserIdentityProfileJsonStatusPlaceBoundingBox
  /// Could not determine type: the field only had null or empty values in the sample set.
  contained_within Json?
  country          String
  country_code     String
  full_name        String
  id               String
  name             String
  place_type       String
  url              String
}

type UserIdentityProfileJsonStatusPlaceBoundingBox {
  coordinates Json
  type        String
}

type UserIdentityProfileJsonStatusRetweetedStatus {
  /// Could not determine type: the field only had null or empty values in the sample set.
  contributors              Json?
  /// Could not determine type: the field only had null or empty values in the sample set.
  coordinates               Json?
  created_at                String
  entities                  UserIdentityProfileJsonStatusRetweetedStatusEntities
  extended_entities         UserIdentityProfileJsonStatusRetweetedStatusExtendedEntities?
  favorite_count            Int
  favorited                 Boolean
  /// Could not determine type: the field only had null or empty values in the sample set.
  geo                       Json?
  id                        Float
  id_str                    String
  /// Could not determine type: the field only had null or empty values in the sample set.
  in_reply_to_screen_name   Json?
  /// Could not determine type: the field only had null or empty values in the sample set.
  in_reply_to_status_id     Json?
  /// Could not determine type: the field only had null or empty values in the sample set.
  in_reply_to_status_id_str Json?
  /// Could not determine type: the field only had null or empty values in the sample set.
  in_reply_to_user_id       Json?
  /// Could not determine type: the field only had null or empty values in the sample set.
  in_reply_to_user_id_str   Json?
  is_quote_status           Boolean?
  lang                      String
  /// Could not determine type: the field only had null or empty values in the sample set.
  place                     Json?
  possibly_sensitive        Boolean?
  retweet_count             Int
  retweeted                 Boolean
  source                    String
  text                      String
  truncated                 Boolean
}

type UserIdentityProfileJsonStatusRetweetedStatusEntities {
  hashtags      UserIdentityProfileJsonStatusRetweetedStatusEntitiesHashtags[]
  media         UserIdentityProfileJsonStatusRetweetedStatusEntitiesMedia[]
  /// Could not determine type: the field only had null or empty values in the sample set.
  symbols       Json?
  urls          UserIdentityProfileJsonStatusRetweetedStatusEntitiesUrls[]
  /// Could not determine type: the field only had null or empty values in the sample set.
  user_mentions Json?
}

type UserIdentityProfileJsonStatusRetweetedStatusEntitiesHashtags {
  indices Int[]
  text    String
}

type UserIdentityProfileJsonStatusRetweetedStatusEntitiesMedia {
  display_url          String
  expanded_url         String
  id                   Float
  id_str               String
  indices              Int[]
  media_url            String
  media_url_https      String
  sizes                UserIdentityProfileJsonStatusRetweetedStatusEntitiesMediaSizes
  source_status_id     Float?
  source_status_id_str String?
  source_user_id       Float?
  source_user_id_str   String?
  type                 String
  url                  String
}

type UserIdentityProfileJsonStatusRetweetedStatusEntitiesMediaSizes {
  large  UserIdentityProfileJsonStatusRetweetedStatusEntitiesMediaSizesLarge
  medium UserIdentityProfileJsonStatusRetweetedStatusEntitiesMediaSizesMedium
  small  UserIdentityProfileJsonStatusRetweetedStatusEntitiesMediaSizesSmall
  thumb  UserIdentityProfileJsonStatusRetweetedStatusEntitiesMediaSizesThumb
}

type UserIdentityProfileJsonStatusRetweetedStatusEntitiesMediaSizesLarge {
  h      Int
  resize String
  w      Int
}

type UserIdentityProfileJsonStatusRetweetedStatusEntitiesMediaSizesMedium {
  h      Int
  resize String
  w      Int
}

type UserIdentityProfileJsonStatusRetweetedStatusEntitiesMediaSizesSmall {
  h      Int
  resize String
  w      Int
}

type UserIdentityProfileJsonStatusRetweetedStatusEntitiesMediaSizesThumb {
  h      Int
  resize String
  w      Int
}

type UserIdentityProfileJsonStatusRetweetedStatusEntitiesUrls {
  display_url  String
  expanded_url String
  indices      Int[]
  url          String
}

type UserIdentityProfileJsonStatusRetweetedStatusExtendedEntities {
  media UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMedia[]
}

type UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMedia {
  display_url          String
  expanded_url         String
  id                   Float
  id_str               String
  indices              Int[]
  media_url            String
  media_url_https      String
  sizes                UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMediaSizes
  source_status_id     Float?
  source_status_id_str String?
  source_user_id       Float?
  source_user_id_str   String?
  type                 String
  url                  String
  video_info           UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMediaVideoInfo?
}

type UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMediaSizes {
  large  UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMediaSizesLarge
  medium UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMediaSizesMedium
  small  UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMediaSizesSmall
  thumb  UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMediaSizesThumb
}

type UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMediaSizesLarge {
  h      Int
  resize String
  w      Int
}

type UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMediaSizesMedium {
  h      Int
  resize String
  w      Int
}

type UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMediaSizesSmall {
  h      Int
  resize String
  w      Int
}

type UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMediaSizesThumb {
  h      Int
  resize String
  w      Int
}

type UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMediaVideoInfo {
  aspect_ratio Int[]
  variants     UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMediaVideoInfoVariants[]
}

type UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMediaVideoInfoVariants {
  bitrate      Int
  content_type String
  url          String
}

type UserIdentityProfileJsonUrls {
  label String
  type  String
  value String
}

type UserIdentityProfileName {
  familyName String?
  givenName  String?
  middleName String?
}

type UserIdentityProfilePhotos {
  type  String?
  value String
}

type UserIdentityProfilePlacesLived {
  primary Boolean?
  value   String
}
